#include <stdio.h>
#include <pthread.h>

// 定义一个自旋锁变量
pthread_spinlock_t spinlock;

// 共享数据
int shared_data = 0;

// 线程函数
void* thread_func(void* arg) {
    for (int i = 0; i < 100000; i++) {
        pthread_spin_lock(&spinlock); // 获取自旋锁
        shared_data++; // 修改共享数据
        pthread_spin_unlock(&spinlock); // 释放自旋锁
    }
    pthread_exit(NULL);
}

int main() {
    pthread_t threads[4];
    
    // 初始化自旋锁
    pthread_spin_init(&spinlock, PTHREAD_PROCESS_PRIVATE);
    
    // 创建4个线程
    for (int i = 0; i < 4; i++) {
        pthread_create(&threads[i], NULL, thread_func, NULL);
    }
    
    // 等待线程结束
    for (int i = 0; i < 4; i++) {
        pthread_join(threads[i], NULL);
    }
    
    // 销毁自旋锁
    pthread_spin_destroy(&spinlock);
    
    printf("shared_data = %d\n", shared_data);
    
    return 0;
}
